package com.xingjiejian.lambda.demo2;

import java.util.Arrays;
import java.util.Comparator;

/**
 * @author Xing Jiejian 2019-12-25
 */
public class DemoComparator {
    private static Comparator<String> newComparator() {
        // 方法的返回值是一个接口，那么我们就可以返回这个接口的匿名内部类
        /*return new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                // 按照字符串降序排序
                return o2.length() - o1.length();
            }
        };*/

        // 方法返回值类型是一个函数式接口，所以可以返回一个Lambda表达式
        /*return (String o1, String o2) ->{
            return o2.length() - o1.length();
        };*/

        // 继续优化：Lambda表达式可以自动推断参数类型
        return (a, b) -> b.length() - a.length();
    }

    public static void main(String[] args) {
        String[] array = {"abc", "ab", "abcd"};
        System.out.println(Arrays.toString(array));
        Arrays.sort(array, newComparator());
        System.out.println(Arrays.toString(array));
    }
}
